// Ionic Starter App

// angular.module is a global place for creating, registering and retrieving Angular modules
// 'starter' is the name of this angular module example (also set in a <body> attribute in index.html)
// the 2nd parameter is an array of 'requires'
// 'starter.services' is found in services.js
// 'starter.controllers' is found in controllers.js
angular.module('wanhang', ['ionic', 'ngResource', 'wanhang.controllers', 'wanhang.services'])

    .run(function ($ionicPlatform) {
        $ionicPlatform.ready(function () {
            // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
            // for form inputs)
            if (window.cordova && window.cordova.plugins.Keyboard) {
                cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
            }
            if (window.StatusBar) {
                // org.apache.cordova.statusbar required
                StatusBar.styleDefault();
            }
        });
    })

    .config(function ($stateProvider, $urlRouterProvider) {

        // Ionic uses AngularUI Router which uses the concept of states
        // Learn more here: https://github.com/angular-ui/ui-router
        // Set up the various states which the app can be in.
        // Each state's controller can be found in controllers.js
        $stateProvider

            // setup an abstract state for the tabs directive
            // Each tab has its own nav history stack:

            .state('home', {
                url: '/home',
                templateUrl: 'templates/home.html',
                controller: 'HomeCtrl'
            })

            .state('about', {
                url: '/about',
                templateUrl: 'templates/about.html'
            })

            .state('culture', {
                url: '/culture',
                templateUrl: 'templates/culture.html'
            })

            .state('products', {
                url: '/products',
                templateUrl: 'templates/product-list.html',
                resolve: {
                    Products: "Products",
                    products: ["Products",
                        function(a) {
                            return a.query().$promise
                        }
                    ]
                },
                controller: 'ProductListCtrl'
            })

            .state('product', {
                url: '/products/{productId}',
                templateUrl: 'templates/product-detail.html',
                resolve: {
                    Products: "Products",
                    product: ["Products", "$stateParams",
                        function(a,b) {
                            return a.query({productId: b.productId}).$promise
                        }
                    ]
                },
                controller: 'ProductDetailCtrl'
            })

            .state('news', {
                url: '/news',
                templateUrl: 'templates/news-list.html',
                resolve: {
                    News: "News",
                    news: ["News",
                        function(a) {
                            return a.query().$promise
                        }
                    ]
                },
                controller: 'NewsListCtrl'
            })

            .state('newsDetail', {
                url: '/news/{newsId}',
                templateUrl: 'templates/news-detail.html',
                resolve: {
                    News: "News",
                    news: ["News", "$stateParams",
                        function(a,b) {
                            return a.query({newsId: b.newsId}).$promise
                        }
                    ]
                },
                controller: 'NewsDetailCtrl'
            })

            .state('category', {
                url: '/category',
                templateUrl: 'templates/category.html',
                resolve: {
                    Categories: "Categories",
                    categories: ["Categories",
                        function(a) {
                            return a.query().$promise
                        }
                    ]
                },
                controller: 'CategoryCtrl'
            })

            .state('jobs', {
                url: '/category/{categoryId}/jobs',
                templateUrl: 'templates/job-list.html',
                resolve: {
                    Categories: "Categories",
                    jobs: ["Categories", "$stateParams",
                        function(a, b) {
                            return a.query({categoryId: b.categoryId}).$promise
                        }
                    ]
                },
                controller: 'JobListCtrl'
            })

            .state('job', {
                url: '/category/{categoryId}/jobs/{jobId}',
                templateUrl: 'templates/job-detail.html',
                resolve: {
                    Jobs: "Jobs",
                    job: ["Jobs", "$stateParams",
                        function(a, b) {
                            return a.query({jobId: b.jobId}).$promise
                        }
                    ]
                },
                controller: 'JobDetailCtrl'
            })

            .state('jobFlow', {
                url: '/job-flow',
                templateUrl: 'templates/job-flow.html'
            })

            .state('resume', {
                url: '/job/{jobId}/resume',
                templateUrl: 'templates/resume.html',
                resolve: {
                    Jobs: "Jobs",
                    job: ["Jobs", "$stateParams",
                        function(a, b) {
                            return a.query({jobId: b.jobId}).$promise
                        }
                    ]
                },
                controller: 'ResumeCtrl'
            });

        // if none of the above states are matched, use this as the fallback
        $urlRouterProvider.otherwise('/home');

    });

